在Qt中使用拖放事件(Drag and Drop) - sbw Blog

在Qt中使用拖放事件(Drag and Drop)

来源: 石博文博客 | 浏览: 9844 | 评论: 0 发表时间: 2014-07-23

Qt中的QDrag类提供了MIME数据支持的拖放事件,使用拖放事件,用户可以更直观的移动和改变想在应用程序中使用的数据。无论是在桌面环境下还是平板电脑或其它设备中,使用拖放都可以使程序更加的方便和人性化。为了保证使用的数据可以在事件完成后被清理,QDrag事件需要实现在以QWidget为父类的元素上。本文以一个Demo实现了最常用的文件/文本拖放到应用程序的示例。



开启拖放事件

和触摸等大多不常用的事件一样,拖放事件在默认情况下也是不会激活的,要使用拖放事件需要在被拖放元素的构造方法中开启拖放事件:


实现拖放事件

为MainWindow开启了拖放事件后,可以通过覆盖拖放事件的响应函数来实现具体的功能。在本例中需要重写 dragEnterEvent 和 dropEvent :


在dragEnterEvent中判断如果当前mime类型为文本或者url(本地文件是以url类型描述的),则调用acceptProposedAction来设置对应的事件发生flag——只有设置了这个flag,后面的drop事件才会发生。如果要捕获所有类型的拖放事件则可以直接调用acceptProposedAction。


在dropEvent中,我们判断mime的类型然后触发对应的操作,本例中我们将文件的路径或文本内容加入到一个listWidget中:

Qt中使用拖放事件(Drag and Drop) file and text
示例代码下载


没有人评论过此文,还不快抢个沙发
  • 昵称: *
  • 邮箱:
  • 网址:
  • 记住我的信息
  • Color
  • Red
  • Blue
  • Code
  • bash
  • cpp
  • css
  • java
  • js
  • perl
  • php
  • python
  • ruby
  • sql
  • xml